package com.xci.platform.auth.dao;

import com.xci.platform.auth.entity.RoleEntity;
import com.xci.platform.auth.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 系统用户角色映射数据访问接口
 */
@Mapper
public interface UserRoleMapDao {
    /**
     * 添加角色用户关联
     *
     * @param roleId  角色主键
     * @param userIds 用户主键数组
     */
    int saveUser(@Param("roleId") String roleId, @Param("userIds") String[] userIds);

    /**
     * 添加用户角色关联
     *
     * @param userId  用户主键
     * @param roleIds 角色主键数组
     */
    int saveRole(@Param("userId") String userId, @Param("roleIds") String[] roleIds);

    /**
     * 删除角色用户关联
     *
     * @param roleId  角色主键
     * @param userIds 用户主键数组
     */
    int deleteUser(@Param("roleId") String roleId, @Param("userIds") String[] userIds);

    /**
     * 删除用户角色关联
     *
     * @param userId  用户主键
     * @param roleIds 角色主键数组
     */
    int deleteRole(@Param("userId") String userId, @Param("roleIds") String[] roleIds);

    /**
     * 获取指定角色中的用户列表
     */
    List<UserEntity> queryUser(@Param("roleId") String roleId, @Param("params") Map params);

    /**
     * 获取指定用户中的角色列表
     */
    List<RoleEntity> queryRole(@Param("userId") String userId, @Param("params") Map params);

    /**
     * 获取指定用户中没有选择的角色列表
     */
    List<RoleEntity> queryUnRole(@Param("userId") String userId, @Param("params") Map params);

    /**
     * 获取指定角色中没有选择的用户列表
     */
    List<UserEntity> queryUnUser(@Param("roleId") String roleId, @Param("params") Map params);
}
